package interesado;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;

import javax.swing.WindowConstants;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

import misc.Logica;

/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
@SuppressWarnings("serial")
public class RegistrarSolicitud_GUI extends javax.swing.JFrame {

	{
		//Set Look & Feel
		try {
			javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

	private JLabel lblTipo;
	private JButton btnTerminar;
	private JButton btnCancelar;
	private JScrollPane jScrollPane2;
	private JScrollPane jScrollPane1;
	private JTable tblTipoSolicitudes;
	private JButton btnAgregarPedidos;

	//Agregados
	private Interesado_GUI padre;
	private Logica logica;
	private DefaultTableModel modeloTipoSolicitud;
	private Pedidos_GUI pedidos;
	private boolean haAgregado=false;
	/**
	* Auto-generated main method to display this JFrame
	*/
	
	public RegistrarSolicitud_GUI(Interesado_GUI padre,Logica logica) {
		super();
		this.padre=padre;
		this.logica=logica;
		initGUI();
		cargarDatos();

	}
	
	private void initGUI() {
		try {
			setTitle("Registrar Solicitud");
			setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				lblTipo = new JLabel();
				getContentPane().add(lblTipo);
				lblTipo.setText("Tipo:");
				lblTipo.setBounds(35, 39, 55, 20);
				lblTipo.setHorizontalAlignment(SwingConstants.RIGHT);
			}
			{
				btnAgregarPedidos = new JButton();
				getContentPane().add(btnAgregarPedidos);
				btnAgregarPedidos.setText("Agregar Pedidos");
				btnAgregarPedidos.setBounds(254, 193, 141, 23);
				btnAgregarPedidos.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						if(tblTipoSolicitudes.getSelectedRow()==-1)
							JOptionPane.showMessageDialog(null,"Debe seleccionar un tipo de solicitud", "Error", JOptionPane.ERROR_MESSAGE);
						else
							agregarPedidos();
					}
				});
			}
			{
				btnTerminar = new JButton();
				getContentPane().add(btnTerminar);
				btnTerminar.setText("Terminar");
				btnTerminar.setBounds(115, 193, 128, 23);
				btnTerminar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						salir();
					}
				});
			}
			{
				btnCancelar = new JButton();
				getContentPane().add(btnCancelar);
				btnCancelar.setText("Cancelar");
				btnCancelar.setBounds(419, 193, 107, 23);
				btnCancelar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						if(haAgregado)
								eliminarSolicitudFisicamente();
						salir();
					}
				});
			}
			{
				jScrollPane1 = new JScrollPane();
				getContentPane().add(jScrollPane1);
				jScrollPane1.setBounds(116, 43, 420, 129);
				{
					jScrollPane2 = new JScrollPane();
					jScrollPane1.setViewportView(jScrollPane2);
					jScrollPane2.setPreferredSize(new java.awt.Dimension(418, 123));
					{
						
						tblTipoSolicitudes = new JTable();
						jScrollPane2.setViewportView(tblTipoSolicitudes);
						modeloTipoSolicitud=new DefaultTableModel();
						//modeloTipoSolicitud.addColumn("codigo");
						modeloTipoSolicitud.addColumn("Denominacion");
						jScrollPane1.setViewportView(tblTipoSolicitudes);
						tblTipoSolicitudes.setModel(modeloTipoSolicitud);
						tblTipoSolicitudes.setBounds(119, 103, 348, 48);
						tblTipoSolicitudes.setPreferredSize(new java.awt.Dimension(418, 123));
					}
				}
			}
			pack();
			this.setSize(636, 299);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}

	private void salir(){
		this.setVisible(false);
		padre.setVisible(true);
		this.dispose();
	}
	
	private void agregarPedidos(){
		
		//Tomar el tipo de solicitud seleccionada		
		int fila=tblTipoSolicitudes.getSelectedRow();
		//Object obj = tblTipoSolicitudes.getValueAt(fila, 0);
		
		//String tipoSolicitud=obj.toString();

		//CREAR LA SOLICITUD
		
		String den = tblTipoSolicitudes.getValueAt(fila, 0).toString();
		
		int codigoSolicitud=logica.registrarSolicitud(Integer.parseInt(logica.getUsuarioConectado()), den);
		
		if(codigoSolicitud==-1)
			JOptionPane.showMessageDialog(null,"Se produjo un error al registrar solicitud", "Error", JOptionPane.ERROR_MESSAGE);	
		else{
			pedidos=new Pedidos_GUI(this,logica, codigoSolicitud);
			pedidos.setLocationRelativeTo(this);
			pedidos.setVisible(true);
			
			//Deshabilitamos correspondientemente
			tblTipoSolicitudes.setEnabled(false);
			btnAgregarPedidos.setEnabled(false);
			haAgregado=true;
			this.setVisible(false);
		}

	}
	
	public void cargarDatos(){
		ResultSet rs=logica.consultarTipoSolicitudConFecha();
		logica.limpiar(modeloTipoSolicitud);
		
		try {
			while (rs.next())
			{
			   // Se crea un array que será una de las filas de la tabla. 
			   Object [] fila = new Object[1]; // Hay tres columnas en la tabla

			   // Se rellena cada posición del array con una de las columnas de la tabla en base de datos.
			   for (int i=0;i<1;i++)
			      fila[i] = rs.getObject(i+2); // El primer indice en rs es el 1, no el cero, por eso se suma 1.

			   // Se añade al modelo la fila completa.
			   modeloTipoSolicitud.addRow(fila); 
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	public void eliminarSolicitudFisicamente(){
		logica.eliminarSolicitudFisicamente();
	}
	
}
